package com.recipedb.sprint.service;

import com.recipedb.sprint.entity.Sessions;
import org.springframework.web.servlet.mvc.method.annotation.SseEmitter;
import java.util.List;
import java.util.Map;

public interface LlmSessionService {

    /**
     * 创建新会话并调用大模型。
     *
     * @param userid         用户ID
     * @param userInput      用户输入文本
     * @param model          模型名称
     * @param useSystemPrompt 是否使用系统提示词
     * @param preferences    前端传入的偏好 JSON 字符串，可为 null
     * @return 新建会话的 sessionId
     */

        Map<String, Object> createSessionAndRunLlm(Long userid, String userInput, String model,
                                                   boolean useSystemPrompt, String preferences);

        Sessions getSessionById(Long sessionId);

        void streamSession(Long sessionId, SseEmitter emitter);

        // 新增：基于 Redis key 的流式传输
        void streamSessionByRedisKey(String redisKey, SseEmitter emitter);

        List<Sessions> getUserOwnSessions(Long userId);

        void submitFeedback(Long sessionId, Long userId, Integer rating, String feedback);
    }
